Consumers of software applications typically have problems associated with the software come up. These problems range from configuration errors to system crashes. When the consumer encounters these type of problems they usually first try to find a solution to the problem by consulting with a search engine. The search engine aims to find relevant documents from an index that was created by crawling through web documents, discussion boards, email threads, software manuals and other publicly available documents. If the search engine does not provide adequate results the consumer will typically call a customer support service. When dealing with customer support, an customer support representative or engineer tries to match the reported problem with information contained in a knowledge base database e.g., by searching the database or using a classification schema. This approach allows the customer support staff to provide the user with the expert written facts and rules to solve the customer's problem.
However, the customer support service using humans is extremely costly for companies to provide. Second, this approach risks significant wait times when a large number of customers call the call center at once or within a short time window. This typically occurs, for example, when a new feature is released or a faulty software patch ends up causing new problems on the customer machine. Third, this approach to troubleshooting is dependent on the expert defined rules in the database that risk incompleteness or become outdated as the software evolves. Finally, this approach only solves the problem that is reported or presented by the customer to the customer support but does not identify other potentially related problems such as the need to apply a specific security patch.
Search engines such as Google and Bing have been optimized to output highly relevant results for a given query. However, their techniques focus on text-based matching of the query terms or its extensions such as spell correction or changing the order of terms to enable matching of relevant documents. This approach makes it difficult to correctly identify and analyze configuration errors based on the information contained in the articles (e.g., technical solutions) in the knowledge base. This is because these articles are written in natural language text, they are highly domain-specific, and they often use abbreviations and synonyms for technical words and also may describe conditional constraints on the configuration parameters and values in the specific documents that indicate configurations where the document is relevant and where it is not relevant. As such the problem or error reported/presented by the consumer may not be easily searchable in the knowledge base articles.